/*
 * Copyright (C) 2018 justlive1
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
package vip.justlive.cloud.registry;

import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * 程序入口
 * 
 * @author wubo
 *
 */
@SpringBootApplication(scanBasePackages = "vip.justlive",
    exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
@EnableEurekaServer
@Controller
@RequestMapping
public class RegistryApplication {

  @Value("${earth.registry.path:/eureka}")
  String registryPath;

  @RequestMapping("/index")
  public ModelAndView index() {
    return new ModelAndView("forward:/");
  }

  @RequestMapping("${earth.registry.path}/**")
  public ModelAndView registry(HttpServletRequest request) {
    return new ModelAndView(
        "forward:/eureka" + request.getRequestURI().replaceFirst(registryPath, ""));
  }

  public static void main(String[] args) {

    SpringApplication.run(RegistryApplication.class, args);
  }

}
